package com.ruoyi.employer.service.impl;

import java.util.List;

import com.ruoyi.employer.domain.PayBalance;
import com.ruoyi.employer.mapper.PayBalanceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.employer.mapper.PayWechatMapper;
import com.ruoyi.employer.domain.PayWechat;
import com.ruoyi.employer.service.IPayWechatService;

/**
 * 货主微信钱包管理Service业务层处理
 * 
 * @author ysq
 * @date 2024-08-14
 */
@Service
public class PayWechatServiceImpl implements IPayWechatService 
{
    @Autowired
    private PayWechatMapper payWechatMapper;
    /**
     * 查询货主微信钱包管理
     * 
     * @param id 货主微信钱包管理主键
     * @return 货主微信钱包管理
     */
    @Override
    public PayWechat selectPayWechatById(Long id)
    {
        return payWechatMapper.selectPayWechatById(id);
    }

    /**
     * 查询货主微信钱包管理列表
     * 
     * @param payWechat 货主微信钱包管理
     * @return 货主微信钱包管理
     */
    @Override
    public List<PayWechat> selectPayWechatList(PayWechat payWechat)
    {
        return payWechatMapper.selectPayWechatList(payWechat);
    }

    /**
     * 新增货主微信钱包管理
     * 
     * @param payWechat 货主微信钱包管理
     * @return 结果
     */
    @Override
    public int insertPayWechat(PayWechat payWechat)
    {
        return payWechatMapper.insertPayWechat(payWechat);
    }

    /**
     * 修改货主微信钱包管理
     * 
     * @param payWechat 货主微信钱包管理
     * @return 结果
     */
    @Override
    public int updatePayWechat(PayWechat payWechat)
    {
        return payWechatMapper.updatePayWechat(payWechat);
    }

    /**
     * 批量删除货主微信钱包管理
     * 
     * @param ids 需要删除的货主微信钱包管理主键
     * @return 结果
     */
    @Override
    public int deletePayWechatByIds(Long[] ids)
    {
        return payWechatMapper.deletePayWechatByIds(ids);
    }

    /**
     * 删除货主微信钱包管理信息
     * 
     * @param id 货主微信钱包管理主键
     * @return 结果
     */
    @Override
    public int deletePayWechatById(Long id)
    {
        return payWechatMapper.deletePayWechatById(id);
    }
    /**
     * 充值操作
     *
     * @param id 用户ID
     * @param amount 充值金额
     * @return 更新是否成功
     */
    @Override
    public boolean recharge(Long id, double amount) {
        PayWechat payWechat = payWechatMapper.selectById(id);
        if (payWechat == null) {
            return false; // 用户不存在
        }
        //计算新的金额
        Double newBalance =  payWechat.getWechatWallet() + amount;
        payWechat.setWechatWallet(newBalance);
        int rows = payWechatMapper.updatePayWechat(payWechat);
        return rows > 0;
    }
    /**
     * 提现操作
     *
     * @param id 用户ID
     * @param amount 提现金额，购买商品
     * @return 更新是否成功
     */
    @Override
    public boolean withdraw(Long id, double amount) {
        // 从数据库获取 PayWechat 对象
        PayWechat payWechat = payWechatMapper.selectById(id);
        if (payWechat == null) {
            return false; // 用户不存在
        }
        // 获取钱包金额并进行计算
        Double wechatWallet = payWechat.getWechatWallet();
        if (wechatWallet == null) {
            wechatWallet = 0.0; // 如果钱包金额为 null，则将其视为 0
        }

        // 计算新的金额
        Double newWechatWallet = wechatWallet - amount;
        if (newWechatWallet < 0) {
            return false; // 余额不足
        }

        payWechat.setWechatWallet(newWechatWallet);
        int rows = payWechatMapper.updatePayWechat(payWechat);
        return rows > 0;
    }

}
